};
/* a table of config file constants mapped to chars */
-const XcsvStyle::char_map_t XcsvStyle::xcsv_char_table[] = {
+const QHash<QString, QString> XcsvStyle::xcsv_char_table {
{ "COMMA", "," },
{ "COMMASPACE", ", " },
{ "SINGLEQUOTE", "'" },
{ "SPACE", " " },
{ "HASH", "#" },
{ "WHITESPACE", "\\w" },
- { "PIPE", "|" },
- { nullptr, nullptr }
+ { "PIPE", "|" }
};
// Given a keyword of "COMMASPACE", return ", ".
QString
XcsvStyle::xcsv_get_char_from_constant_table(const QString& key)
{
- static QHash<QString, QString> substitutions;
- if (substitutions.empty()) {
- for (const char_map_t* cm = xcsv_char_table; !cm->key.isNull(); cm++) {
- substitutions.insert(cm->key, cm->chars);
- }
- }
- if (substitutions.contains(key)) {
- return substitutions[key];
+ if (xcsv_char_table.contains(key)) {
+ return xcsv_char_table[key];
}
// No substitution found? Just return original.
return key;
private:
/* Types */
- /* something to map config file constants to chars */
- struct char_map_t {
- const QString key;
- const QString chars;
- };
-
/* Member Functions */
static QString dequote(const QString& in);
static const QHash<QString, xcsv_token> xcsv_tokens;
/* a table of config file constants mapped to chars */
- static const char_map_t xcsv_char_table[];
+ static const QHash<QString, QString> xcsv_char_table;
};
class XcsvFormat : public Format